package com.weixx.rabbitmq.simple;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @Auther weixx
 * @Date 2022/2/25
 */
public class Producer {

    public static void main(String[] args) throws IOException, TimeoutException {
        //所有的中间件技术都是基于 tcp/ip 协议 ，只不过rabbitMQ遵循的是amqp
        //tcp/ip肯定躲不过ip port
        //1.创建连接工程
        ConnectionFactory cf = new ConnectionFactory();
        cf.setHost("47.101.36.174");
        cf.setPort(5672);
        cf.setUsername("admin");
        cf.setPassword("admin");
        cf.setVirtualHost("/");
        //2.创建连接Connection
        Connection connection=cf.newConnection("生产者");
        //3.通过连接获取通道Channel
        Channel channel = connection.createChannel();
        //4.通过创建交换机，声明队列，绑定关系，路由key，发送消息和接收消息
        String qunueName="qunue1";
        /**
         * @params1 队列名
         * @params2 是否持久化，消息是否存盘，  非持久化会存盘吗？
         * @params3 排他性，是否独占独立
         * @params4 是否自动删除，随着最后一个消费者消费完毕之后是否把队列自动删除
         * @params5 携带一些附加参数
         */
        channel.queueDeclare(qunueName,false,false,false,null);
        //5.准备消息内容
        String messages="hello weixx";
        //6.发送消息给队列queue
        channel.basicPublish("",qunueName,null,messages.getBytes());
        //7.关闭连接
        if (channel!=null && channel.isOpen()){
            channel.close();
        }
        //8.关闭通道
        if (connection!=null&&connection.isOpen()){
            connection.close();
        }
    }
}
